home *** CD-ROM | disk | FTP | other *** search
- CODE SEGMENT
- ASSUME CS:CODE,DS:CODE
- ORG 100H
- START: JMP SHORT L010C
- L0101 DB 0
- L0109 DW 0FFFFH
- L0103 DW 0FFFFH
- L0105 DW 0FFFFH
- L0107 DW 0FFFFH
- L010A DW 0FFFFH
- RFLAG DW 0
- L0120A DB 50,1
- DW 328,1,0
- DB 200,1
- DW 82,1,0
- L0143A DB 15,8
- DW 137,40,1
- DB 60,8
- DW 137,2,40
- L0165A DB 15,1
- DW 276,256,1
- DB 15,1
- DW 20,256,-1
- L0187A DB 1,1
- DW 276,256,1
- DB 1,1
- DW 20,256,-1
- L010C: CLI
- MOV SI,80H
- LODSB
- OR AL,AL
- JNZ L0115
- L018E: STI
- INT 20H
- L0115: PUSH SI
- L0116: POP SI
- LODSB
- CMP AL,13
- JZ L018E
- PUSH SI
- CMP AL,'0'
- JB L0116
- CMP AL,'9'+1
- JNB NOTNUM
- AND AL,15
- MOV AH,L0101
- ADD AH,AH
- ADD AH,AH
- ADD AH,L0101
- ADD AH,AH
- ADD AL,AH
- MOV L0101,AL
- JMP L0116
- NOTNUM: AND AL,5FH
- MOV SI,OFFSET L0120A
- CMP AL,'B'
- JZ L0189
- MOV SI,OFFSET L0143A
- CMP AL,'A'
- JZ L0189
- MOV SI,OFFSET L0165A
- CMP AL,'T'
- JZ L0189
- MOV SI,OFFSET L0187A
- CMP AL,'Q'
- JZ L0189
- CMP AL,'S'
- JZ GOTS
- CMP AL,'R'
- JNZ L0116
- XOR RFLAG,8
- JMP L0116
- GOTS: MOV AH,1
- INT 16H
- MOV RFLAG,0
- JZ L010C
- MOV AH,0
- INT 16H
- JMP L0116
- L0189: ADD SI,RFLAG
- MOV DI,OFFSET L0109
- MOV CX,4
- REP MOVSW
- L018B: MOV BX,L0109
- IN AL,61H
- PUSH AX
- L0190: MOV DX,L0103
- MOV CX,L0105
- MOV L010A,CX
- L01A9: AND AL,0FCH
- OUT 61H,AL
- MOV CX,DX
- L01AF: LOOP L01AF
- OR AL,2
- OUT 61H,AL
- MOV CX,DX
- L01B7: LOOP L01B7
- DEC BL
- JNZ L01A9
- MOV BL,BYTE PTR L0109
- SUB DX,L0107
- DEC L010A
- JNZ L01A9
- DEC BH
- JNZ L0190
- POP AX
- OUT 61H,AL
- MOV AL,L0101
- OR AL,AL
- JZ L01C0
- DEC L0101
- JNZ L018B
- L01C0: JMP L0116
- CODE ENDS
- END START
- 0
- POP AX
- OUT 61H,AL
- MOV AL,L0101
- OR AL,AL
- JZ L01C0
- DEC L0101